home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / ms_dos / dsort / dstdata.asm < prev    next >
Encoding:
Assembly Source File  |  1993-07-08  |  5.8 KB  |  132 lines

  1.     page    96,132
  2. ;§∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞§
  3. ;§                                                                          §
  4. ;§              ディレクトリエントリ  ソート  ユーティリティ                §
  5. ;§                                                                          §
  6. ;§                                     DSORT.EXE  Ver1.30    §
  7. ;§                                                                          §
  8. ;§              Copyright (C) by 福地 邦雄 1991-1992. All rights reserved.  §
  9. ;§∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞§
  10.     .MODEL  SMALL,C
  11. ;
  12.     DPB struc
  13. drivenumber     db      ?       ;ドライブ番号
  14. unitnumber      db      ?       ;ユニット番号
  15. sectorlength    dw      ?       ;セクタ長
  16. sectorperalloc  db      ?       ;1クラスタ当たりのセクタ数-1
  17. shiftcount      db      ?       ;1クラスタ当たりのセクタ数の2のべき乗
  18. reservedsector  dw      ?       ;先頭のリザーブセクタ数
  19. numberoffat     db      ?       ;FAT数
  20. directoryentry  dw      ?       ;ルートディレクトリのエントリ数
  21. datastartsector dw      ?       ;データ領域開始セクタ番号
  22. datasector      dw      ?       ;最大クラスタ数(全クラスタ数+1)
  23. fatsector       dw      ?       ;1FAT当たりのセクタ数
  24. directorystart  dw      ?       ;ディレクトリ領域開始セクタ番号
  25. todeviceheader  dd      ?       ;デバイスヘッダへのポインタ
  26. mediadescriptor db      ?       ;メディアディスクリプタ
  27. diskchange      db      ?       ;ディスクの交換可能属性
  28. tonextdpb       dd      ?       ;次のDPBへのポインタ
  29. currentcluster  dw      ?       ;カレントクラスタ
  30. reserved        db  3 dup(?)    ;リザーブ
  31.     DPB ends
  32. ;
  33.     DSKPACKET   struc
  34. sectornum       dd      ?       ; 32bitセクタ番号
  35. rwcount         dw      ?       ; READ/WRITEセクタ数
  36. dskbuffer       dd      ?       ; バッファアドレス
  37.     DSKPACKET   ends
  38. ;
  39. YES     equ 1
  40. NO      equ 0
  41. HEAD    equ 0
  42. BS      equ 8
  43. TAB     equ 9
  44. CR      equ 0dh
  45. LF      equ 0ah
  46. ;
  47.     .data
  48. ;
  49.     public  sweep,  sortexec,recursive,dirgather,subsearch
  50.     public  dta,    srchname,namebuff,namebuffsiz
  51.     public  dirtype,fattype,attribute,clustcount,clustsect,entrycount
  52.     public  fatdrive,driveno,clustsize,sectcount
  53.     public  fatbuff,dirbuff,sortbuff,sortcount,drvinf,movecount
  54.     public  sortfuncs,subchain,wildcard,pathbuff,usagemsg,msgsize
  55.     public  procs,dirover,bothmsg,sortmsg,movemsg,nothmsg
  56. ;
  57.     public  dos4,sect32,diskaccs
  58. ;
  59.     EVEN
  60. sweep       dw  YES     ; ソート対象外のエントリを先頭に集める
  61. sortexec    dw  YES     ; ソートを行う
  62. recursive   dw  NO      ; サブディレクトリを再帰的に処理する
  63. dirgather   dw  HEAD    ; サブディレクトリを集める方向
  64. subsearch   dw  NO      ; 再帰処理内で '.','..'を含まないように判断
  65. attribute   dw  ?       ; ソート対象とするファイル属性を反転したもの
  66. ;
  67. dta         dd  ?       ; ディレクトリサーチ用Disk Transfer Address
  68. srchname    dd  ?       ; ディレクトリサーチ名
  69. namebuff    dd  ?       ; ディレクトリ名バッファ
  70. namebuffsiz dw  4096    ; ディレクトリ名バッファサイズ
  71. ;
  72. dirtype     dw  ?       ; ディレクトリタイプ  ルート:サブ
  73. fattype     dw  ?       ; FATタイプ  12bit:16bit
  74. clustsect   dw  ?       ; 1クラスタのセクタ数
  75. sectcount   label   word    ; ルートディレクトリのセクタ数
  76. clustcount  dw  ?       ; サブディレクトリのクラスタ数
  77. clustsize   dw  ?       ; 1クラスタのバイトサイズ
  78. entrycount  dw  ?       ; ディレクトリの最大エントリ数
  79. ;
  80. dos4        dw  ?       ; DOS V4.xxフラグ
  81. sect32      dw  ?       ; 32bitセクタ番号サポートフラグ
  82. ;
  83. fatdrive    dw  -1      ; FATドライブ番号
  84. driveno     dw  -1      ; DPBドライブ番号
  85. fatbuff     dw  ?       ; FATバッファのセグメント
  86. dirbuff     dw  ?       ; ディレクトリバッファのセグメント
  87. sortbuff    dw  ?       ; ソートバッファのセグメント
  88. sortcount   dw  ?       ; ソート対象エントリ数
  89. movecount   dw  ?       ; 先頭詰め対象エントリ数
  90. ;
  91. drvinf      DPB <>      ; DPBのコピー
  92. ;
  93. diskaccs    DSKPACKET   <>  ; 32bitセクタ番号ディスクアクセスパケット
  94. ;
  95. sortfuncs   dw  33 dup(?)   ; ソート用比較関数のリスト
  96. ;
  97. wildcard    db  '\*.*',0    ; ワイルドカード
  98. pathbuff    db  96 dup(?)   ; ディレクトリサーチ用パス名バッファ
  99. ;
  100. procs   db  '処理中',TAB,TAB,'    $'
  101. dirover db  'ディレクトリが512KB以上',CR,LF,'$'
  102. ;
  103. bothmsg db  'エントリをソート/移動',CR,LF,'$'
  104. sortmsg db  'エントリをソート',CR,LF,'$'
  105. movemsg db  'エントリを移動',CR,LF,'$'
  106. nothmsg db  '対象エントリなし',CR,LF,'$'
  107. ;
  108. usagemsg    label   byte    ; ヘルプメッセージ
  109. db  TAB,"  ディレクトリ エントリ ソート ユーティリティ 1992/10/01 Ver1.30",CR,LF
  110. db "                     Copyright (C) by 福地 邦雄 1991-1992. All rights reserved.",CR,LF
  111. db  "使い方:DSORT  <オプション>  ディレクトリーパス名・・・",CR,LF
  112. db  TAB,"-?  -->ソート条件指定        +?  -->ソート対象選択",CR,LF
  113. db  "   -f -F  フルネーム   11文字",TAB,"+g +G  サブディレクトリを先頭(小文字)又は末尾(大文字)",CR,LF
  114. db  "   -n -N  ファイルネーム  8文字",TAB,"       に寄せる(無指定時はファイルと同格に扱う)",CR,LF
  115. db  "   -e -E  拡張子   3文字",TAB,"+t     ツリー構造の下部まで再帰的にソート",CR,LF
  116. db  "   -s -S  ファイルサイズ",TAB,TAB,"+a +d +v +s +h +r   各属性エントリを対象に加える",CR,LF
  117. db  "   -d -D  最終更新日付",TAB,TAB,"    a=アーカイブ d=ディレクトリ v=ボリュームラベル s=システムファイル",CR,LF
  118. db  "   -t -T  最終更新時刻",TAB,TAB,"    h=隠しファイル r=リードオンリー     初期指定値= +adr",CR,LF
  119. db  "デフォルト= -f (フルネーム・昇順)     +n     ソートを行わない 削除エントリ分を詰めるだけ",CR,LF
  120. db  TAB,TAB,TAB,TAB,"+f     ソート対象でないエントリを先頭に詰めない",CR,LF
  121. db  "小文字=昇順  大文字=降順      複数指定可能で、指定した順番に比較する。",CR,LF
  122. db  "+a~+rの指定は トグルスイッチ になっていて、2回指定するとソート対象から外れる。",CR,LF
  123. db  "ディレクトリーパス名は必ず指定すること。  カレントの場合は'.'を、ルートの場合は'\'を使用する。",CR,LF
  124. msgsize     =   $-offset usagemsg
  125. ;
  126.     EVEN
  127. subchain    dw  ?           ; サブディレクトリのFATチェイン
  128. ;
  129.     .stack
  130. ;
  131.     end
  132.